#include <iostream>
#include <map>  //map的头文件
using namespace std;

/*
	map：存放键值对(一一对应关系)
	存放账号密码
	    账号：键
		密码：值
	存放姓名学号
	    姓名：键  string
		学号：值  int
	map的模板参数有两个必须传递，分别代表键的类型  值的类型
*/

int main()
{
	//创建map对象
	map<string,string> mymap1;
	
	//存放数据写法1：使用insert方法-->键和值组合在一起形成一条完整的键值对数据
	mymap1.insert(pair<string,string>("张三","123456"));
	mymap1.insert(pair<string,string>("李四","147258"));
	mymap1.insert(pair<string,string>("王五","456789"));
	mymap1.insert(pair<string,string>("赵六","369258"));
	//存放数据写法2：偷懒的写法,mymap1[键]=值  使用了重载的中括号
	mymap1["赵七"]="159357";
	mymap1["赵八"]="846319";
	
	//通过键获取值
	//cout<<"张三的密码: "<<mymap1.at("张三")<<endl;
	//通过键修改值
	//mymap1.at("张三")="654321";
	
	//通过键，统计对应的键值对数量
	//auto ret=mymap1.count("李四");
	//cout<<"李四对应的键值对有: "<<ret<<"对！"<<endl;
	
	//删除键值对
	//mymap1.erase(mymap1.begin());
	//mymap1.erase("李四");
	
	//通过键查找键值对
	auto myit=mymap1.find("赵七");
	if(myit!=mymap1.end())
	{
		cout<<"找到了，键是: "<<myit->first<<"  值是: "<<myit->second<<endl;
	}
	else
		cout<<"对不起，没有这个键值对"<<endl;
	
	//遍历容器
	auto it=mymap1.begin();
	for(; it!=mymap1.end(); it++)
	{
		cout<<"map里面存放的键是： "<<it->first<<endl;
		cout<<"map里面存放的值是： "<<it->second<<endl;
	}
	
}